; 尝试使用 dup
assume ds:data, cs:code, ss:stack

; 编程将 data 段中的数据 按照如下格式 定入到 table 段中，并计算21 年中的人均收入(取整)
; 结果也按照下面的格式保存在 table 段中
; ds:0 1f
data segment
    db  '1975','1976','1977','1978','1979','1980','1981','1982','1983'
    db  '1984','1985','1986','1987','1988','1989','1990','1991','1992'
    db  '1993','1994','1995'
    ;以上是表示21年的21个字符串 year

    dd  16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514
    dd  345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000
    ;以上是表示21年公司总收入的21个dword数据	sum

    dw  3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226
    dw  11542,14430,15257,17800

data ends

; ds:e0 ff
table segment
               ;0123456789ABCDEF
    db 21 dup ('year summ ne ?? ')
table ends

stack segment stack
    db 128 dup (0)
stack ends


code segment

; 设定数据地址
start:
    mov ax, data
    mov ds, ax
; 设定栈地址
    mov ax, stack
    mov ss, ax
    mov sp, 128
; 设置 table 段地址
    mov ax, table
    mov es, ax

; Year 的偏移地址
    mov si, 0
; 收入的偏移地址
    mov di, 84
; 员工数量的偏移地址
    mov bx, 168
; table 的偏移地址
    mov bp, 0

; 设置循环次数
    mov cx, 21

loob:

    mov ax, ds:[si]
    mov es:[bp], ax
    mov dx, ds:[si+2]
    mov es:[bp+2], dx
    add si, 4
    add bp, 5

    mov ax, ds:[di]
    mov es:[bp], ax
    mov dx, ds:[di+2]
    mov es:[bp+2], dx
    add di, 4
    add bp, 5

    push cx
    mov cx, ds:[bx]
    mov es:[bp], cx
    div cx
    mov es:[bp+3], ax
    add bx, 2
    add bp, 6
    pop cx


    loop loob

    mov ax, 4c00H
    int 21H

code ends

end start